home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
mint
/
lib
/
mntlib44.zoo
/
mntlib
/
ffs.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-09-15
|
755b
|
42 lines
/*
* ffs.c - find the lowest bit set
* Returns a 2-exponent of position + 1 and 0 for 0
* Michal Jaegermann, <ntomczak@vm.ucs.ualberta.ca>
* 10 July 1993
* This piece of code is in a Public Domain
*/
#include <support.h>
int
ffs(bits)
int bits;
{
register int count;
if (0 == bits)
return 0;
bits &= -bits;
#ifndef __MSHORT__
count = (bits & 0x0000ffff ? 16 : 32);
if (bits & 0x00ff00ff)
count -= 8;
if (bits & 0x0f0f0f0f)
count -= 4;
if (bits & 0x33333333)
count -= 2;
if (bits & 0x55555555)
count -= 1;
#else
count = (bits & 0x00ff ? 8 : 16);
if (bits & 0x0f0f)
count -= 4;
if (bits & 0x3333)
count -= 2;
if (bits & 0x5555)
count -= 1;
#endif /* __MSHORT__ */
return count;
}